// routes/person.js 使用的路由处理函数

// 导入相关模型
const { PersonModel } = require('../db/model')
const moment = require('moment')
// 配置成中文
moment.locale('zh-cn');

// 获取用户列表
const list = async (req, res) => {
  // 1. 拿出参数
  const { current, pagesize, is_status, gender, search } = req.query

  // 2. 按照参数从数据库中获取内容
  // 2-1. 计算开始索引
  const start = (current - 1) * pagesize
  // 2-2. 添加两个筛选条件
  const info = {
    nickname: new RegExp(search) ,
    gender: new RegExp(gender === 'all' ? '' : gender)
  }
  // 判断是否禁用的条件
  if (is_status !== 'all') info.is_status = is_status - 0 ? true : false
  const result = await PersonModel.find(info).skip(start).limit(pagesize)

  // 3. 获取总数
  const total = (await PersonModel.find(info)).length

  const list = []

  result.forEach(item => {
    list.push({
      id: item._id,
      username: item.username,
      password: item.password,
      nickname: item.nickname,
      gender: item.gender,
      age: item.age,
      desc: item.desc,
      avatar: item.avatar,
      is_status: item.is_status,
      createTime: moment(item.createTime).format('LLLL')
    })
  })

  res.send({
    code: 1,
    message: '获取用户列表成功',
    list: list,
    totalPage: Math.ceil(total / pagesize)
  })
}

// 修改用户状态
const status = async (req, res) => {
  // 1. 拿到参数信息
  const { id, status } = req.body

  // 2. 操作数据库修改信息
  await PersonModel.findByIdAndUpdate(id, { is_status: (status - 0 === 1 ? true : false) })

  // 3. 返回给前端修改完毕的信息
  res.send({
    code: 1,
    message: '修改用户状态成功, 当前用户已经被 ' + (status ? '启用' : '禁用')
  })
}

module.exports = {
  list,
  status
}